package com.lqk.demo.atomic.atomicinteger;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author lqk
 * @date 2021/12/30 14:08
 */
public class TestAtomic1 {
    public static void main(String[] args) {
        // 无参构造初始化也是0
        AtomicInteger i = new AtomicInteger(5);
//        // 相当于 ++i，不过是原子性的
//        i.incrementAndGet();
//        // 相当于 i++，也是原子性的
//        i.getAndIncrement();
//        // 相当于 --i，也是原子性的
//        i.decrementAndGet();
//        // 相当于 i--, 原子性的
//        i.getAndDecrement();
//        // 先增加5,然后再获取i的值
//        i.addAndGet(5);
//        // 先获取i的值, 再增加5
//        i.getAndAdd(5);

//        i.updateAndGet(x->{
//            return x*10;
//        });

        // 先运算,再返回运算后的值
        int i1 = i.updateAndGet(x -> x * 10);
        System.out.println(i1);
        // 先返回之前的值,再运算
        i.getAndUpdate(x->x*10);

        System.out.println(i.get());

    }
}
